package vn.com.vega.chacha.v2.Asynctask;

import java.util.List;

import vn.com.vega.chacha.v2.ActivityBase;
import vn.com.vega.music.clientserver.JsonPlaylist;
import vn.com.vega.music.database.DataStore;
import vn.com.vega.music.objects.Playlist;
import vn.com.vega.music.objects.Song;
import vn.com.vega.music.utils.Util;


public class AddSongToPlaylist extends BaseAsyncTask {
	
	public interface AddSongToPlaylistListener {
		public void addSuccess();
		public void addFail(String message);
	}
	
	private AddSongToPlaylistListener listener;
	private List<Song> songList;
	private Playlist playlist;
	private String errorMessage = null;
	
	public AddSongToPlaylist(ActivityBase base, List<Song> listSong, Playlist playlist, AddSongToPlaylistListener addListener) {
		super(base);
		// TODO Auto-generated constructor stub
		this.listener = addListener;
		this.songList = listSong;
		this.playlist = playlist;
	}


	@Override
	protected Void doInBackground(Void... params) {
		// TODO Auto-generated method stub
		JsonPlaylist jsonPlaylist = JsonPlaylist.addSongToPlaylist(songList, playlist);
		if (jsonPlaylist.isSuccess()) {
			errorMessage = null;
		} else {
			errorMessage = jsonPlaylist.getErrorMessage();
		}
		return null;
		
//		int numberSongExistInPlaylist = 0;
//		int numberSongNeedAdd = songList.size();
//		for (int i = 0; i < songList.size(); i++) {
//			Song song = songList.get(i);
//			if (playlist.songList.contains(song)) {
//				songList.remove(i);
//				i--;
//				numberSongExistInPlaylist++;
//			}
//		}
//		if (numberSongExistInPlaylist == numberSongNeedAdd) {
//			errorMessage = "Tất cả các bài hát đã có sẵn trong playlist";
//			return null;
//		}
//		
//		if (numberSongExistInPlaylist > 0) {
//			errorMessage = "Một số bài hát đã có sẵn trong playlist";
//		}
//		
//		try {
//			DataStore dataStore = DataStore.getInstance();
//			int numberSuccess = 0;
//			for (Song song : songList) {
//				if (dataStore.addSongToPlaylist(playlist.id, song)) {
//					numberSuccess ++;
//				} else {
//					errorMessage = "";
//				}
//			}
//			if (numberSuccess == songList.size()) {
//				if (errorMessage != null) {
//					errorMessage = "Add thành công, " + errorMessage;
//				} else {
//					errorMessage = null;
//				}
//			} else {
//				if (numberSuccess > 0) {
//					if (Util.checkStringIsemptyOrNull(errorMessage)) {
//						
//					} else {
//						errorMessage += ", Một số bài add không thành công";
//					}
//				} else {
//					errorMessage = "Add các bài hát vào playlist thất bại";
//				}
//			}
//			
//			
//		} catch (Exception e) {
//			// TODO: handle exception
//			errorMessage = "";
//		}
//		
//		return null;
	}

	@Override
	protected void onPostExecute(Void result) {
		// TODO Auto-generated method stub
		if (isCancelled() || !checkIsLive()) {
			return;
		}
		if (listener != null) {
			if (errorMessage == null) {
				listener.addSuccess();
			} else {
				listener.addFail(errorMessage);
			}
		}
	}

	@Override
	protected void onPreExecute() {
		// TODO Auto-generated method stub
		super.onPreExecute();
	}

}
